% **************************************************************************
%
%  Package 'casosdeuso', version 1.10(para realizar especificaciones de casos
% de uso para la materia Ingenier�a de Software I).
%
%  Se agrega el entorno para crear tablas de especificaciones.
%
%  En caso de dudas, problemas o sugerencias sobre este package escribir a
%  Brian J. Cardiff (bcardif arroba gmail.com).
%  Nico Rosner (nrosner arroba dc.uba.ar).
%  Santiago Avenda�o (santiavenda2 arroba hotmail.com)
%
% **************************************************************************

% ----- Informacion sobre el package para el sistema -----------------------

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ingsoft1}[15/09/2008 v0.1 Para componer diagramas y tablas (Ingenieria de Software 1)]
\RequirePackage{ifthen}
\RequirePackage{multirow}
\RequirePackage{colortbl}%para las columnas en color


% ----- Imprimir un mensajito al procesar un .tex que use este package -----

\typeout{Cargando package 'ingsoft1' v1.0 (2008/09/29)}

%-------------------Contador de Casos de Uso-------------------------------%
\newcounter{cuCount}
\setcounter{cuCount}{1}


%---Entorno para escribir listas de operaciones en un curso alternativo---%
\newcounter{listCount}
\newenvironment{packedlist}[1]{
	\vspace{-0.2cm}
	\begin{list}{#1.\arabic{listCount}}{\usecounter{listCount}
		\setlength{\itemindent}{-0.3cm} 
	      \setlength{\listparindent}{-1.5cm}
		\setlength{\partopsep}{0pt}
		\setlength{\topsep}{0pt}
		\setlength{\itemsep}{0pt}
		\setlength{\parskip}{0pt}
		\setlength{\parsep}{0pt}
	}
}
{
\vspace{-0.4cm}
\end{list}
\setcounter{listCount}{1}
}

%-------------------Contador de operaciones-------------------------------%
\newcounter{opCount}
\setcounter{opCount}{1}

%-------------Comando para agregar operaciones a un caso de uso-----------%
% acordarse de finalizar el comando con un \\
\newcommand{\op}[2]{
	\multicolumn{2}{|p{8cm}|}{\arabic{opCount}. #1}& #2 
	\addtocounter{opCount}{1}%
}

%---------Entorno para generar la tabla de requerimientos-----------------%
\newcounter{reqCount}
\setcounter{reqCount}{1}
%El comnado funciona del siguiente modo
%\req{nombre req}{descripcion}{motivo}{area relacionada}
\newcommand{\req}[3]{
	\begin{tabular}[b]{|>{\columncolor[gray]{0.9}}l |p{12 cm}|}
	\hline
	\rowcolor[gray]{0.7}\textbf{[REQ-\arabic{reqCount}]} & #1 \\
	\hline
	\textbf{Descripci'on} & #2 \\
	\hline
	\textbf{Areas} & #3 \\
	\hline
	\end{tabular}
	\vspace{0.5cm}
	\addtocounter{reqCount}{1}%
}

%---------Entorno para generar la tabla de casos de uso -----------------%
%El comnado funciona del siguiente modo
%\begin{cu}{nombre CU}{Actor Primario}{Pre}{Pos}{ancho curso normal}{ancho curso alternativo}
%A continuacion se agregan las operaciones con el comando \op
%finalmente se cierra con un \end{cu}
\newenvironment{cu}[5]
{ 
	\begin{tabular}[b]{|p{3 cm}|p{3 cm}|p{6 cm}|}
	\hline
	\multicolumn{3}{|>{\columncolor[gray]{0.7}}l|}{{\textbf{CASO DE USO:} \texttt{#1}}}\\
	\hline
	\cellcolor[gray]{0.9}\textbf{Referencia:} & \multicolumn{2}{l|}{[CU-\arabic{cuCount}]}\\
	\hline
	\cellcolor[gray]{0.9}\textbf{Requerimientos:} & \multicolumn{2}{l|}{#5}\\
	\hline
	\cellcolor[gray]{0.9}\textbf{Actores:} & \multicolumn{2}{l|}{#2}\\
	\hline
	\cellcolor[gray]{0.9}\textbf{Precondición:} &\multicolumn{2}{p{11 cm}|}{#3}\\
	\hline
	\cellcolor[gray]{0.9}\textbf{Poscondición:} & \multicolumn{2}{p{11 cm}|}{#4} \\
	\hline
	\multicolumn{2}{|>{\columncolor[gray]{0.7}}c|}{\textbf{Curso Normal}} &  \multicolumn{1}{|>{\columncolor[gray]{0.7}}c|}{\textbf{Curso Alternativo}} \\
	\hline
}
{
	\hline
	\end{tabular}
	\vspace{0.5cm}
	\setcounter{opCount}{1}
	\addtocounter{cuCount}{1}
}



\newcounter{invCount}
\setcounter{invCount}{1}
\newcommand{\inv}[4]{
%\vspace{0.3cm}
\textbf{Restricci'on \arabic{invCount}: }  $ #1 $\\
\indent\textbf{Explicaci'on: }#2\\
\indent\textbf{context: }\texttt{#3}\\ 
\indent\textbf{inv: }\texttt{#4}
\vspace{0.5cm}
\addtocounter{invCount}{1}%
}

%-------------Comando para agregar atributos a una clase-----------%
% se usa de la siguiente manera:
% \atrib{nombre}{tipo}
% acordarse de finalizar el comando con un \\
\newcommand{\atrib}[2]{
 	\multicolumn{2}{|l|}{#1 : #2} 

}

%-------------Comando para agregar procediemientos a una clase-----------%
% se usa de la siguiente manera:
% \proc{nombre}{tipo}{retorno}
% acordarse de finalizar el comando con un \\
\newcommand{\proc}[2]{
 	\multicolumn{2}{|l|}{#1 : #2} 

}


%---------Entorno para generar la tabla de Clase-----------------%
\newcounter{classCount}
\setcounter{classCount}{1}
%El comnado funciona del siguiente modo
%\begin{class}{nombre clase}{} \end{class}
\newenvironment{class}[2]
{ 
	\begin{tabular}[b]{|>{\columncolor[gray]{0.9}}l |p{12 cm}|}
	\hline
	\rowcolor[gray]{0.7}\textbf{[CLS-\arabic{classCount}]} & #1 \\
	\hline
}
{
	
	\hline
	\end{tabular}
	\vspace{0.5cm}
	\addtocounter{classCount}{1}%
}




%----------------------------FIN-----------------------------------%